#e
#Title[uj̃}Xv]
#Text[]
#Image[]
#BackGround[]
#BGM[]
#PlayLevel[Extra]
#ScriptVersion[2]
#Player[FREE]

script_enemy_main
{
let wt=100;
let usebomb=0;

	//GoɈxs镔
	@Initialize
	{
	//   eϐ

	//   XyJ[hf[^
	SetLife(1000);
	SetScore(200000);
	SetDamageRate(30,  0);
	SetTimer(80);
	SetInvincibility(250);
	LoadGraphic("script\img\ExRumia.png");
	CutIn(KOUMA,"uj̃}Xv",GetCurrentScriptDirectory~"..\img\cutin07.png",0,0,255,320);

	}
	//   ʒu܂ňړ
	SetMovePosition02(GetCenterX, GetCenterY-120, 60);

	BG_Standard;
	AtackTask;
	MoveTask;
	ControlTask;
	//G̃Ct0ɂȂ܂ŁA̕1t[1s
	@MainLoop
	{
		yield;


		if(OnBomb==false){
			SetCollisionA(GetX, GetY, 32);
			SetCollisionB(GetX, GetY, 24);
			usebomb=0;
		}
		else{
			usebomb++;
		}
		if(usebomb==1){
			BombBarrier;
		}
	}
	
	//`惋[vB1t[1s
	@DrawLoop
	{
		SetGraphicRect(0,1,63,64);
		if(GetSpeedX<0){
			SetGraphicRect(128,1,191,64);
		}
		if(GetSpeedX>0){
			SetGraphicRect(192,1,255,64);
		}
		SetColor(255,255,255);
		SetAlpha(255);
		if(OnBomb==true){SetAlpha(96);}
		SetTexture("script\img\ExRumia.png");//摜͔q
		DrawGraphic(GetX(),GetY());//G̍WEx[~A`;
	}
		
	//GłuԂɈxs镔
	@Finalize
	{
		CreateItem(ITEM_BOMB,GetX,GetY);
		DeleteGraphic("script\img\ExRumia.png");
		DeleteGraphic(GetCurrentScriptDirectory ~"..img\back1.png");
		DeleteGraphic(GetCurrentScriptDirectory ~"..img\back2.png");
	}
	//XyJ[h̔wi
	//Ă悢
	@BackGround
	{
		BG_Simple;
	}

	task AtackTask{
		wait(120);
		let phasesleep=11;
		let phaseend=14;
		let movespd=3.6;
		let firstspace=14;
		let shotspd=2;
		let phase=0;
		let delay=20;
		let interval=7;
		let ammo=40;
		let temp=0;

		while(true){
			MC_Set(GetClipMinX,GetClipMaxY,movespd,0,shotspd,75,32,phasesleep,phaseend,firstspace,0,-1,108,interval,delay);
			wait(wt);
			MC_Set(GetClipMaxX,GetClipMinY,movespd,180,shotspd,255,32,phasesleep,phaseend,firstspace,0,1,108,interval,delay);
			wait(wt);
			MC_Set(GetClipMinX,GetClipMinY,movespd,90,shotspd,165,27,phasesleep,phaseend,firstspace,1,0,144,interval,delay);
			wait(wt);
			MC_Set(GetClipMaxX,GetClipMaxY,movespd,270,shotspd,345,27,phasesleep,phaseend,firstspace,-1,0,144,interval,delay);
			wait(wt);
			MC_Set(GetClipMaxX,GetClipMaxY,movespd,180,shotspd,105,32,phasesleep,phaseend,firstspace,0,-1,108,interval,delay);
			wait(wt);
			MC_Set(GetClipMinX,GetClipMinY,movespd,0,shotspd,285,32,phasesleep,phaseend,firstspace,0,1,108,interval,delay);
			wait(wt);
			MC_Set(GetClipMinX,GetClipMaxY,movespd,270,shotspd,195,27,phasesleep,phaseend,firstspace,1,0,144,interval,delay);
			wait(wt);
			MC_Set(GetClipMaxX,GetClipMinY,movespd,90,shotspd,15,27,phasesleep,phaseend,firstspace,-1,0,144,interval,delay);
			wait(wt);
		
		}

	}

	task MC_Set(	//8p^[Ə璷Ȃ̂ŁA܂Ƃ߂B
		x,y,movespd,movedir,shotspd,shotdir,firstshot,phasesleep,phaseend,
		firstspace,firstx,firsty,ammo,interval,delay
	){
		let temp=rand_int(0,2);
		let grf=0;

		let phase=rand_int(1,phaseend-1);
		loop(firstshot){
			if(phase<phasesleep){
				temp++;
				if(temp==1){grf=RED01;}
				if(temp==2){grf=GREEN01;}
				if(temp==3){grf=BLUE01;temp=0;}
				CreateShot01(x,y,shotspd,shotdir,grf,delay);
			}
			if(phase>phaseend){phase=0;}
			phase++;
			x+=firstx*firstspace;
			y+=firsty*firstspace;
		}
		MoveCannon(x,y,movespd,movedir,shotspd,shotdir,0,0,interval,ammo,phaseend,phasesleep,phase,grf,delay,temp);
	}

	task MoveCannon(	//Ɨ^ړC(I}PɐFωt)
		let x,		//ݒuXW
		let y,		//ݒuYW
		let movespd,	//ړx(ˌ)
		let movedir,	//ړpx
		let shotspd,	//ˌx
		let shotdir,	//ˌpx
		let shotpower,	//ˌxω(ˌ)
		let shotturret,	//ˌpxω(ˌ)
		let interval,	//ˌԊu
		let ammo,	//e
		let phaseend,	//A˂̈؂(tFCY)
		let phasesleep,	//̃tFCYԍȍ~Ȃ(ړƕω͓ōsBeB)
		let phase,	//tFCYԍ
		let grf,	//OtBbN
		let delay,	//fBC
		let temp	//OtBbNύXp
		){
		loop(ammo){//es܂Ń[vs
			if(phase<phasesleep){
				temp++;
				if(temp==1){grf=RED01;}
				if(temp==2){grf=GREEN01;}
				if(temp==3){grf=BLUE01;temp=0;}
				CreateShot01(x,y,shotspd,shotdir,grf,delay);
			}
			if(phase>phaseend-1){
				phase=0;
			}
			phase++;
			x+=cos(movedir)*movespd;
			y+=sin(movedir)*movespd;
			shotspd+=shotpower;
			shotdir+=shotturret;
			ammo--;

			wait(interval);
		}
	}



	task MoveTask{
		wait(120);
		while(true){
			SetMovePosition02(rand(GetClipMinX+60,GetCenterX-60), rand(GetClipMinY+60,GetCenterY-80), 80);
			wait(180);
			SetMovePosition02(rand(GetCenterX-60,GetCenterX+60), rand(GetClipMinY+60,GetCenterY-80), 80);
			wait(180);
			SetMovePosition02(rand(GetCenterX+60,GetClipMaxX-60), rand(GetClipMinY+60,GetCenterY-80), 80);
			wait(180);
			SetMovePosition02(rand(GetCenterX-60,GetCenterX+60), rand(GetClipMinY+60,GetCenterY-80), 80);
			wait(180);
		}
	}
	task ControlTask{
		wait(250);
		while(GetEnemyLife>800&&GetTimer>20){yield;}
		wt=90;
		while(GetEnemyLife>600&&GetTimer>20){yield;}
		wt=80;
		while(GetEnemyLife>400&&GetTimer>20){yield;}
		wt=70;
		while(GetEnemyLife>200&&GetTimer>20){yield;}
		wt=60;
		while(GetTimer>20){yield;}
		wt=50;
	}

	#include_function".\function.txt"
}

